import http from '@/api';
import { ADMIN_MODULE } from '@/api/helper/prefix';
import type { IPage, IResultData } from '@/api/types';
import type { DeptQuery, CompanyForm, FleetForm, DeptRow } from '@/api/types/dept/dept';

/**
 * 获取公司列表（分页）
 * @param params 查询参数
 * @returns 分页数据
 */
export const getCompanyListApi = (params: DeptQuery) => {
  return http.get<IPage<DeptRow>>(`${ADMIN_MODULE}/dept/company/all`, params);
};

/**
 * 获取车队列表（分页）
 * @param params 查询参数，包括companyId
 * @returns 分页数据
 */
export const getFleetListApi = (params: DeptQuery) => {
  // 确保companyId参数存在且有效
  if (!params.companyId || params.companyId <= 0) {
    // 返回空数据而不是发送无效请求
    return Promise.resolve({
      code: '0000',
      message: 'SUCCESS',
      data: {
        current: 1,
        limit: 10,
        totalPage: 0,
        total: 0,
        rows: []
      }
    } as IResultData<IPage<DeptRow>>);
  }
  
  return http.get<IPage<DeptRow>>(`${ADMIN_MODULE}/dept/fleet/all`, params);
};

/**
 * 新增公司
 * @param params 公司表单数据
 * @returns 结果
 */
export const createCompanyApi = (params: CompanyForm) => {
  return http.post<IResultData<null>>(`${ADMIN_MODULE}/dept/company`, params);
};

/**
 * 更新公司
 * @param params 公司表单数据
 * @returns 结果
 */
export const updateCompanyApi = (params: CompanyForm) => {
  return http.put<IResultData<null>>(`${ADMIN_MODULE}/dept/company`, params);
};

/**
 * 删除公司
 * @param ids 公司ID数组
 * @returns 结果
 */
export const removeCompanyApi = (ids: string[]) => {
  return http.delete<IResultData<null>>(`${ADMIN_MODULE}/dept/company`, { ids });
};

/**
 * 新增车队
 * @param params 车队表单数据
 * @returns 结果
 */
export const createFleetApi = (params: FleetForm) => {
  return http.post<IResultData<null>>(`${ADMIN_MODULE}/dept/fleet`, params);
};

/**
 * 更新车队
 * @param params 车队表单数据
 * @returns 结果
 */
export const updateFleetApi = (params: FleetForm) => {
  return http.put<IResultData<null>>(`${ADMIN_MODULE}/dept/fleet`, params);
};

/**
 * 删除车队
 * @param ids 车队ID数组
 * @returns 结果
 */
export const removeFleetApi = (ids: string[]) => {
  return http.delete<IResultData<null>>(`${ADMIN_MODULE}/dept/fleet`, { ids });
};